package com.cjw.service.livesquare;

import com.cjw.pojo.dto.database.PageDTO;
import com.cjw.pojo.dto.livesquare.DetailPlanDTO;
import com.cjw.pojo.dto.livesquare.MyPlanDTO;
import com.cjw.pojo.dto.livesquare.PlanSimpleDTO;
import com.cjw.pojo.query.livesquare.AddPlanDTO;

import java.util.Date;
import java.util.List;

/**
 * @author : cjw
 * @date: : 2022/2/12 14:02
 * @description : PlanService
 */
public interface PlanService {
    /**
     * 获取全部计划-分页
     * @param page
     * @param size
     * @return
     */
    PageDTO<List<PlanSimpleDTO>> findAllPlans(Integer page, Integer size);

    /**
     * 获取排行榜-按照参与人数排名
     * @param number
     * @return
     */
    List<PlanSimpleDTO> findMaxListPlans(Integer number);

    /**
     * 查询详细计划
     * @param id
     * @return
     */
    DetailPlanDTO findDetail(Long id);

    /**
     * 改变参与状态,0-参与，1-取消
     * @param id
     * @return
     */
    Boolean changePlan(Long id, Integer state);

    /**
     * 打卡
     * @param planId
     * @param type 0-打卡 1-取消打卡
     * @return
     */
    Boolean changeClock(Long planId, Integer type);

    /**
     * 通过时间查询个人计划
     * @param date
     * @return
     */
    List<MyPlanDTO> getMyPlans(Date date);

    /**
     * 添加计划
     * @param addPlanDTO
     * @return
     */
    Long addPlan(AddPlanDTO addPlanDTO);

    /**
     * 匹配计划
     * @return
     */
    Long matchPlan();
}
